/*
 * Votante.h
 *
 *  Created on: Sep 12, 2011
 *      Author: marcos
 */

#ifndef VOTANTE_H_
#define VOTANTE_H_

#include <iostream>
using std::string;

#include "Distrito.h"
#include "Eleccion.h"

#include "../util/List.h"


class Votante {
private:
	int dni;
	string nombre;
	string apellido;
	string password;
	Distrito* distrito;
	List *elecciones;
public:
	Votante();
	virtual ~Votante();
    string getApellido() const;
    Distrito *getDistrito() const;
    int getDni() const;
    string getNombre() const;
    string getPassword() const;
    void setApellido(string apellido);
    void setDistrito(Distrito *distrito);
    void setDni(int dni);
    void setNombre(string nombre);
    void setPassword(string password);
    List *getElecciones() const;
    void setElecciones(List *elecciones);
    //Format line Lastname, Name
    string getFullName();

    void modify(string nombre, string apellido, string password);

    static Votante* create(int dni);
    static Votante* create(int dni, string nombre, string apellido, string password, Distrito* distrito, List* elecciones);

    //Serialize and Unserialize methods
    static Votante* toObject(iostream *stream);
    void toData(iostream*);
};

#endif /* VOTANTE_H_ */
